#include <iostream>
#include<unistd.h>
#include<sys/types.h>
#include<vector>
#include<string.h>
#include<stdio.h>


// 环境变量
int main()
{
    // 让程序识别用户身份，只让zxl用户进行访问
    const char* who = getenv("USER");

    if(strcmp(who, "zxl") == 0)
    {
        printf("执行程序的正常命令！\n");
        return 0;
    }
    else 
    {
        printf("无权访问！\n");
        return 1;
    }
    return 0;
}

//int main(int argc, char* argv[], char* env[])
//{
//    for(int i = 0; env[i]; i++)
//    {
//        printf("env[%d]:%s\n",i, env[i]);
//    }
//    return 0;
//}

//int main(int argc, char* argv[])
//{
//    if(argc != 2)
//    {
//        printf("Usage: code opt\n");
//        return 1;
//    }
//
//    if(strcmp(argv[1], "-opt1") == 0)
//    {
//        printf("功能1\n");
//    }
//    else if(strcmp(argv[1], "-opt2") == 0)
//    {
//        printf("功能2\n");
//    }
//    else if(strcmp(argv[1], "-opt3") == 0)
//    {
//        printf("功能2\n");
//    }
//    else 
//    {
//        printf("默认功能\n");
//    }
//}

//int main(int argc, char* argv[])
//{
//    printf("argc: %d\n", argc);
//    for(int i = 0; i < argc; i++)
//    {
//        printf("argv[%d]: %s\n", i, argv[i]);
//    }
//    return 0;
//}



//// 僵尸进程: 父进程在进行，但没有读取到子进程状态，子进程就会进入僵尸状态
//int main()
//{
//    printf("父进程运行： pid: %d, ppid: %d\n", getpid(), getppid());
//
//    pid_t id = fork();
//    if(id == 0)
//    {
//        // 子进程
//        int cnt = 10;
//        while(cnt)
//        {
//            printf("我是子进程， 我的pid: %d, ppid: %d, cnt: %d\n", getpid(),getppid(),cnt);
//           // sleep(2);
//            cnt--;
//        }
//    }
//    else 
//    {
//        // 父进程
//        while(1)
//        {
//            printf("我是父进程， 我的pid: %d, ppid: %d\n", getpid(),getppid());
//            sleep(1);
//        }
//    }
//    return 0;
//}
//

//using namespace std;
//
//const int num = 10;
//
//void SubProcessRun()
//{
//    while(1)
//    {
//        cout << "我是子进程， pid: " << getpid() << ", ppid: " << getppid() << std::endl;
//        sleep(5);
//    }
//}
//
//int main()
//{
//    vector<pid_t> allchild;
//    int i = 0;
//    for(i = 0; i < num; i++)
//    {
//        pid_t id = fork();
//        if(id == 0)
//        {
//            // 子进程
//            SubProcessRun();
//        }
//        // 父进程在执行
//        allchild.push_back(id);
//    }
//    // 父进程
//    cout << "我的所有孩子是：";
//    for(auto child: allchild)
//    {
//        cout << child << " ";
//    }
//    cout << endl;
//
//    sleep(10);
//    while(1)
//    {
//        cout << "我是父进程， pid: " << getpid() << endl;
//        sleep(1);
//    }
//
//    return 0;
//}
//

//int gval = 0;
//
//int main()
//{
//    printf("I am a process, pid: %d, ppid: %d\n", getpid(), getppid());
//
//    pid_t id = fork();
//    if(id > 0)
//    {
//        while(1)
//        {
//            printf("我是父进程！ pid: %d, ppid: %d, ret id: %d, gval: %d\n",getpid(), getppid(), id, gval);
//            sleep(1);
//        }
//    }
//    else if(id == 0)
//    {
//        while(1)
//        {
//            printf("我是子进程！ pid: %d, ppid: %d, ret id: %d, gval: %d\n", getpid(), getppid(), id, gval);
//            gval++;
//            sleep(1);
//        }
//    }
//
//
//    return 0;
//}
//
//int main()
//{
//    FILE *fp = fopen("log.txt","w");
//    if(fp == NULL)
//    {}
//
//    pid_t id = getpid();
//    while(1)
//    {
//        printf("hello Linux!, I am a process, pid: %d\n", id);
//        sleep(1);
//    }
//
//    return 0;
//}
